package com.example.adminserivce.Service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.example.adminserivce.domain.Vo.ActivityStatistics;
import com.example.common.domain.pojo.Activity;

import java.time.LocalDate;
import java.util.List;
import java.util.Map;

public interface ActivityService extends IService<Activity> {

    /**
     * 获取指定日期所属周的用户活跃度统计
     *
     * @param userType   用户类型："teacher" 或 "student"
     * @param targetDate 目标日期（为空时默认当前日期）
     * @return 活跃度统计结果
     */
    ActivityStatistics getWeeklyActivity(String userType, LocalDate targetDate);

    /**
     * 获取指定日期所属周的模块分布统计
     *
     * @param userType 用户类型："teacher" 或 "student"
     * @param date     目标日期（为空时默认当前日期）
     * @return 模块分布统计结果
     */
    Map<String, Long> getModuleDistribution(String userType, String date);

    /**
     * 计算指定日期所属周的模块分布百分比
     *
     * @param activeCount 活跃用户数
     * @param totalCount  总用户数
     * @return 模块分布百分比
     */
    Double calculatePercentage(Long activeCount, Long totalCount);

    // 计算周次（从基准日期开始的周数）
    int calculateWeekNumber(LocalDate date);

    /**
     * 查询指定日期范围内的日活跃度统计
     *
     * @param userType  用户类型（teacher/student）
     * @param startDate 开始日期（包含）
     * @param endDate   结束日期（包含）
     * @return 日活跃度列表
     */
    List<Activity> getDailyActivityByDateRange(
            String userType,
            LocalDate startDate,
            LocalDate endDate
    );

}
